def f1(a):
    a=8
    print(f'函数调用中a={a}')
a=5
print(f'函数调用前a={a}')
f1(a)
print(f'函数调用后a={a}')
#4-->5-->6(1-->2-->3)-->7
#4 让a=5
#5 打印函数调用前a的值 5
#6--1 调用函数,把a=5传递进去
#2 让a=8
#3 打印函数调用中a的值 8
#7 打印函数调用后a的值 5
#一、不可变数据类型:int,float,str,bool,tuple
    #把变量作实参传递到函数中，如果变量是不可变数据类型，函数对变量进行了修改，在函数结束后变量的值恢复原来的值
#二、可变数据类型:list,set,dict
    #把变量作为实参传递到函数中，如果变量是可变数据类型，函数对变量进行了修改，在函数结束后变量的值也是被修改的
def f2(a):
    a[0]=8
    print(f'函数调用中a={a}')
a=[1,2,3,4]
print(f'函数调用前a={a}')
f2(a)
print(f'函数调用后a={a}')